package cn.lyw.util;

import java.io.FileReader;
import java.io.IOException;
import java.net.URL;
import java.sql.*;
import java.util.Properties;

/**
 * JDBC工具类
 */

public class JDBCUtils {
  private static String url;
  private static String user;
  private static String password;
  private static String driver;

  /**
   * 静态代码块
   */
  static {
    // 读取资源文件，获取值
    try {
      // 创建Properties集合类
      Properties pro = new Properties();
      // 获取src路径
      ClassLoader classLoader = JDBCUtils.class.getClassLoader();
      URL res = classLoader.getResource("jdbc.properties");
      String path = res.getPath();
      // 加载文件
      pro.load(new FileReader(path));
      // 获取属性赋值
      url = pro.getProperty("url");
      user = pro.getProperty("user");
      password = pro.getProperty("password");
      driver = pro.getProperty("driver");
      // 注册驱动
      Class.forName(driver);
    } catch (IOException e) {
      e.printStackTrace();
    } catch (ClassNotFoundException e) {
      e.printStackTrace();
    }
  }

  /**
   * 获取连接
   *
   * @return
   */
  public static Connection getConnection() throws SQLException {
    return DriverManager.getConnection(url, user, password);
  }

  /**
   * 释放资源
   *
   * @param stmt
   * @param conn
   */
  public static void close(Statement stmt, Connection conn) {
    if (stmt != null) {
      try {
        stmt.close();
      } catch (SQLException e) {
        e.printStackTrace();
      }
    }


    if (conn != null) {
      try {
        conn.close();
      } catch (SQLException e) {
        e.printStackTrace();
      }
    }
  }

  public static void close(ResultSet rs, Statement stmt, Connection conn) {
    if (rs != null) {
      try {
        rs.close();
      } catch (SQLException e) {
        e.printStackTrace();
      }
    }

    if (stmt != null) {
      try {
        stmt.close();
      } catch (SQLException e) {
        e.printStackTrace();
      }
    }

    if (conn != null) {
      try {
        conn.close();
      } catch (SQLException e) {
        e.printStackTrace();
      }
    }
  }
}
